package com.jn.okhttps_demo02;

import android.os.Bundle;

import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.jn.okhttps_demo02.adapter.HotSearchAdapter;
import com.jn.okhttps_demo02.response.HotSearchResponse;
import com.jn.okhttps_demo02.response.TranslationRequest;
import com.jn.okhttps_demo02.response.TranslationResponse;
import com.jn.okhttps_demo02.retrofit.RetrofitClient;
import com.jn.okhttps_demo02.service.ApiService;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

public class MainActivity extends AppCompatActivity {
    private ApiService apiService;
    private RecyclerView recyclerView;
    private HotSearchAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
//使用Retrofit创建一个ApiService实例，设置基础URL为
        apiService = RetrofitClient.getClient("https://api.oioweb.cn/")
                .create(ApiService.class);

        recyclerView = findViewById(R.id.recyclerView);
        //创建HotSearchAdapter的实例。
        adapter = new HotSearchAdapter();
        //将适配器设置到RecyclerView上。
        recyclerView.setAdapter(adapter);
       // 为RecyclerView设置布局管理器，这里使用的是线性布局
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
//为ID为getHotSearch的视图设置点击监听器，点击时调用getHotSearch方法，并传递字符串"baidu"。
        findViewById(R.id.getHotSearch).setOnClickListener(v -> getHotSearch("baidu"));
        //为ID为postTranslate的视图设置点击监听器，点击时调用postTranslate方法。
        findViewById(R.id.postTranslate).setOnClickListener(v -> postTranslate());
    }

    private void getHotSearch(String type) {
       // getHotSearch(String type)  定义了一个名为getHotSearch的方法，接受一个字符串参数type。

       //调用ApiService的getHotSearch方法，发送GET请求，并使用enqueue异步处理响应。
        apiService.getHotSearch(type).enqueue(new Callback<HotSearchResponse>() {
            @Override
            public void onResponse(Call<HotSearchResponse> call, Response<HotSearchResponse> response) {
                if (response.isSuccessful()) {
                    //如果请求成功，将响应体中的result设置到适配器的列表中。
                    adapter.setList(response.body().getResult());
                    //通知适配器数据已经改变，需要刷新UI。
                    adapter.notifyDataSetChanged();
                }
            }


            @Override
            public void onFailure(Call<HotSearchResponse> call, Throwable t) {
                t.printStackTrace();
            }
        });
    }

    private void postTranslate() {
        //创建TranslationRequest对象。
        TranslationRequest request = new TranslationRequest();
        //设置请求对象的源文本为"Hello World"。
        request.setSourceText("Hello World");
        //调用ApiService的postTranslation方法，发送POST请求，并使用enqueue异步处理响应。
        apiService.postTranslation(request).enqueue(new Callback<TranslationResponse>() {
            @Override
            public void onResponse(Call<TranslationResponse> call, Response<TranslationResponse> response) {
                if (response.isSuccessful()) {
                    //如果请求成功，调用displayTranslation方法显示翻译结果。
                    displayTranslation(response.body());
                } else {
                    Toast.makeText(MainActivity.this, "Error: " + response.message(), Toast.LENGTH_SHORT).show();
                }
            }

            @Override
            public void onFailure(Call<TranslationResponse> call, Throwable t) {
                Toast.makeText(MainActivity.this, "Network Error", Toast.LENGTH_SHORT).show();
                t.printStackTrace();
            }
        });
    }
//定义了一个名为displayTranslation的方法，接受一个TranslationResponse对象。
    private void displayTranslation(TranslationResponse response) {
       //显示一个短暂的Toast消息，内容是翻译后的目标文本。
        Toast.makeText(this, response.getTargetText(), Toast.LENGTH_SHORT).show();
    }
}